package com.zhj.interview;

public class Test14 {

    public static void main(String[] args) {
        int[][] matrix = {
                {0,7,6,Integer.MAX_VALUE,Integer.MAX_VALUE,Integer.MAX_VALUE,Integer.MAX_VALUE},
                {7,0,Integer.MAX_VALUE,3,Integer.MAX_VALUE,4,Integer.MAX_VALUE},
                {6,Integer.MAX_VALUE,0,1,4,Integer.MAX_VALUE,Integer.MAX_VALUE},
                {Integer.MAX_VALUE,3,1,0,5,1,Integer.MAX_VALUE},
                {Integer.MAX_VALUE,Integer.MAX_VALUE,4,5,0,Integer.MAX_VALUE,2},
                {Integer.MAX_VALUE,4,Integer.MAX_VALUE,1,Integer.MAX_VALUE,0,6},
                {Integer.MAX_VALUE,Integer.MAX_VALUE,Integer.MAX_VALUE,Integer.MAX_VALUE,2,6,0}
        };
        floyd(matrix);
    }
    
    public static void floyd(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix.length; j++) {
                for (int k = 0; k < matrix.length; k++) {
                    if (matrix[j][i] == Integer.MAX_VALUE || matrix[i][k] == Integer.MAX_VALUE) {
                        continue;
                    }
                    matrix[j][k] = Math.min(matrix[j][k],matrix[j][i] + matrix[i][k]);
                }
            }
        }
        System.out.println("最短路径矩阵：");
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
